package offer2

import "math"

/**
https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/

剑指 Offer 61. 扑克牌中的顺子

从若干副扑克牌中随机抽 5 张牌，判断是不是一个顺子，即这5张牌是不是连续的。
2～10为数字本身，
A为1，J为11，Q为12，K为13，
而大、小王为 0 ，可以看成任意数字。
A 不能视为 14。

示例 1:
输入: [1,2,3,4,5]
输出: True
*/

func isStraight(nums []int) bool {

	repeat := make(map[int]bool) //1.声明是否出现过的记录map

	maxNum := 0 //2.声明最大,最小计数
	minNum := math.MaxInt

	for _, num := range nums { //3.遍历参数数组
		if num == 0 { //大小王可以代替所有数字, 直接跳过即可
			continue
		}

		if repeat[num] {
			return false
		} //如果出现重复数字了, 那么肯定不是顺子了
		repeat[num] = true //将map中当前的key的value置为true

		maxNum = max(maxNum, num) //更新最大,最小值
		minNum = min(minNum, num)
	}

	return maxNum-minNum < 5 //最大牌-最小牌<5 则可构成顺子
}
